package com.ruoyi.fire.domain;

import java.util.Date;
import java.util.List;

import com.alibaba.fastjson2.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 单位信息对象 t_unit
 *
 * @author ruoyi
 * @date 2025-11-02
 */
@Data
@ApiModel(value = "TUnit", description = "物联单位信息对象")
public class TUnit extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ApiModelProperty("主键")
    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    private String id;

    /**
     * 企业类型
     */
    @ApiModelProperty("企业类型 字典：unit_type")
    @Excel(name = "企业类型")
    private String unitType;

    /**
     * 物联单位id
     */
    @ApiModelProperty("物联单位ID")
    @JSONField(name = "unit_id")
    @Excel(name = "物联单位id")
    private String unitId;

    /**
     * 单位名称
     */
    @JSONField(name = "unit_name")
    @Excel(name = "单位名称")
    @ApiModelProperty("单位名称")
    private String unitName;

    /**
     * 户籍化编码
     */
    @JSONField(name = "org_code")
    @Excel(name = "户籍化编码")
    @ApiModelProperty("户籍化编码")
    private String orgCode;

    /**
     * 联网单位类型，通过单位基础数据接口获取
     */
    @ApiModelProperty("联网单位类型")
    @JSONField(name = "unit_type_id")
    @Excel(name = "联网单位类型，通过单位基础数据接口获取")
    private Long unitTypeId;

    /**
     * 联网单位所属区域，区域id,region层级必须为区县级
     */
    @ApiModelProperty("联网单位所属区域")
    @JSONField(name = "region_id")
    @Excel(name = "联网单位所属区域，区域id,region层级必须为区县级")
    private Long regionId;

    /**
     * 单位地址
     */
    @ApiModelProperty("单位地址")
    @JSONField(name = "address")
    @Excel(name = "单位地址")
    private String address;

    /**
     * 主管单位id, 根据基础数据字典-主管单位获取
     */
    @ApiModelProperty("主管单位id")
    @JSONField(name = "supervise_org_id")
    @Excel(name = "主管单位id, 根据基础数据字典-主管单位获取")
    private Long superviseOrgId;

    /**
     * 监管级别id，通过单位基础数据接口获取
     */
    @ApiModelProperty("监管级别ID")
    @JSONField(name = "supervise_level_id")
    @Excel(name = "监管级别id，通过单位基础数据接口获取")
    private Long superviseLevelId;

    /**
     * 联网单位在线状态，0-未联网，1-联网，2-无法判断
     */
    @ApiModelProperty("联网单位在线状态，0-未联网，1-联网，2-无法判断")
    @JSONField(name = "online_status")
    @Excel(name = "联网单位在线状态，0-未联网，1-联网，2-无法判断")
    private Long onlineStatus;

    /**
     * 组织机构编码（统一社会信用代码）
     */
    @ApiModelProperty("组织机构编码（统一社会信用代码）")
    @JSONField(name = "unit_code")
    @Excel(name = "组织机构编码", readConverterExp = "统=一社会信用代码")
    private String unitCode;

    /**
     * 单位联系电话
     */
    @ApiModelProperty("单位联系电话")
    @JSONField(name = "tel")
    @Excel(name = "单位联系电话")
    private String tel;

    /**
     * 所属维保单位id,通过维保单位接口获取
     */
    @ApiModelProperty("所属维保单位id")
    @JSONField(name = "custom_maintenance_unit_id")
    @Excel(name = "所属维保单位id,通过维保单位接口获取")
    private Long customMaintenanceUnitId;

    /**
     * 控制中心电话
     */
    @ApiModelProperty("控制中心电话")
    @JSONField(name = "control_center_tel")
    @Excel(name = "控制中心电话")
    private String controlCenterTel;

    /**
     * 维保开始日期
     */
    @ApiModelProperty("维保开始日期")
    @JSONField(name = "maintenance_start_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "维保开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date maintenanceStartDate;

    /**
     * 维保结束日期
     */
    @ApiModelProperty("维保结束日期")
    @JSONField(name = "maintenance_end_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "维保结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date maintenanceEndDate;

    /**
     * 国民经济行业分类，通过单位基础数据接口获取
     */
    @ApiModelProperty("国民经济行业分类")
    @JSONField(name = "industry_id")
    @Excel(name = "国民经济行业分类，通过单位基础数据接口获取")
    private Long industryId;

    /**
     * 单位标签，多个使用','分隔，例如 “1,2”
     */
    @ApiModelProperty("单位标签")
    @JSONField(name = "unit_tag_ids")
    @Excel(name = "单位标签，多个使用','分隔，例如 “1,2”")
    private String unitTagIds;

    /**
     * 营业执照图片在线地址
     */
    @ApiModelProperty("营业执照图片在线地址")
    @JSONField(name = "business_license")
    @Excel(name = "营业执照图片在线地址")
    private String businessLicense;

    /**
     * 省id
     */
    @ApiModelProperty("省id")
    @JSONField(name = "province_id")
    @Excel(name = "省id")
    private Long provinceId;

    /**
     * 城市id
     */
    @ApiModelProperty("城市id")
    @JSONField(name = "city_id")
    @Excel(name = "城市id")
    private Long cityId;

    /**
     * 区县id
     */
    @ApiModelProperty("区县id")
    @JSONField(name = "district_id")
    @Excel(name = "区县id")
    private Long districtId;

    /**
     * 消防安全责任人姓名
     */
    @ApiModelProperty("消防安全责任人姓名")
    @JSONField(name = "responsible_man_name")
    @Excel(name = "消防安全责任人姓名")
    private String responsibleManName;

    /**
     * 消防安全责任人公民身份号码
     */
    @ApiModelProperty("消防安全责任人公民身份号码")
    @JSONField(name = "responsible_man_id")
    @Excel(name = "消防安全责任人公民身份号码")
    private String responsibleManId;

    /**
     * 消防安全责任人电话
     */
    @ApiModelProperty("消防安全责任人电话")
    @JSONField(name = "responsible_man_tel")
    @Excel(name = "消防安全责任人电话")
    private String responsibleManTel;

    /**
     * 消防安全管理人姓名
     */
    @ApiModelProperty("消防安全管理人姓名")
    @JSONField(name = "fire_manager_name")
    @Excel(name = "消防安全管理人姓名")
    private String fireManagerName;

    /**
     * 消防安全管理人证件号码
     */
    @ApiModelProperty("消防安全管理人证件号码")
    @JSONField(name = "fire_manager_id")
    @Excel(name = "消防安全管理人证件号码")
    private String fireManagerId;

    /**
     * 消防安全关联人电话
     */
    @ApiModelProperty("消防安全关联人电话")
    @JSONField(name = "fire_manager_tel")
    @Excel(name = "消防安全关联人电话")
    private String fireManagerTel;

    /**
     * 消防安全管理人助理人姓名
     */
    @ApiModelProperty("消防安全管理人助理人姓名")
    @JSONField(name = "assist_fire_manager_name")
    @Excel(name = "消防安全管理人助理人姓名")
    private String assistFireManagerName;

    /**
     * 消防安全管理人助理人证件号码
     */
    @ApiModelProperty("消防安全管理人助理人证件号码")
    @JSONField(name = "assist_fire_manager_id")
    @Excel(name = "消防安全管理人助理人证件号码")
    private String assistFireManagerId;

    /**
     * 消防安全管理人助理人电话
     */
    @ApiModelProperty("消防安全管理人助理人电话")
    @JSONField(name = "assist_fire_manager_tel")
    @Excel(name = "消防安全管理人助理人电话")
    private String assistFireManagerTel;

    /**
     * 法人代表姓名
     */
    @ApiModelProperty("法人代表姓名")
    @JSONField(name = "legal_person_name")
    @Excel(name = "法人代表姓名")
    private String legalPersonName;

    /**
     * 法人代表证件号码
     */
    @ApiModelProperty("法人代表证件号码")
    @JSONField(name = "legal_person_id")
    @Excel(name = "法人代表证件号码")
    private String legalPersonId;

    /**
     * 法人代表电话
     */
    @ApiModelProperty("法人代表电话")
    @JSONField(name = "legal_person")
    @Excel(name = "法人代表电话")
    private String legalPersonTel;

    /**
     * 职工总人数
     */
    @ApiModelProperty("职工总人数")
    @JSONField(name = "staff_count")
    @Excel(name = "职工总人数")
    private Long staffCount;

    /**
     * 管辖单位名称
     */
    @ApiModelProperty("管辖单位名称")
    @JSONField(name = "admin_unit_name")
    @Excel(name = "管辖单位名称")
    private String adminUnitName;

    /**
     * 联网单位经济类型，通过单位基础数据接口获得
     */
    @ApiModelProperty("联网单位经济类型")
    @JSONField(name = "economic_type_id")
    @Excel(name = "联网单位经济类型，通过单位基础数据接口获得")
    private Long economicTypeId;

    /**
     * 固定资产，单位:万元
     */
    @ApiModelProperty("固定资产")
    @JSONField(name = "fixed_assets")
    @Excel(name = "固定资产，单位:万元")
    private Long fixedAssets;

    /**
     * 占地面积，单位：平方米
     */
    @ApiModelProperty("占地面积")
    @JSONField(name = "area")
    @Excel(name = "占地面积，单位：平方米")
    private Long area;

    /**
     * 建筑面积，单位：平方米
     */
    @ApiModelProperty("建筑面积")
    @JSONField(name = "building_area")
    @Excel(name = "建筑面积，单位：平方米")
    private Long buildingArea;

    /**
     * 联网日期，格式：2017-01-01 00:00:00
     */
    @ApiModelProperty("联网日期")
    @JSONField(name = "online_date")
    @Excel(name = "联网日期，格式：2017-01-01 00:00:00")
    private String onlineDate;

    /**
     * 地图经度
     */
    @ApiModelProperty("地图经度")
    @JSONField(name = "gps_lng")
    @Excel(name = "地图经度")
    private String gpsLng;

    /**
     * 地图纬度
     */
    @ApiModelProperty("地图纬度")
    @JSONField(name = "gps_lat")
    @Excel(name = "地图纬度")
    private String gpsLat;

    /**
     * 单位所属行业，通过单位基础数据接口获取
     */
    @ApiModelProperty("单位所属行业")
    @JSONField(name = "industry_belong_id")
    @Excel(name = "单位所属行业，通过单位基础数据接口获取")
    private Long industryBelongId;

    /**
     * gsp类型，可选值为'WGS-84', 'GCJ-02', 'BD-09'
     */
    @ApiModelProperty("gsp类型，可选值为'WGS-84', 'GCJ-02', 'BD-09'")
    @JSONField(name = "gps_type")
    @Excel(name = "gsp类型，可选值为'WGS-84', 'GCJ-02', 'BD-09'")
    private String gpsType;

    /**
     * 额外单位信息，自定义信息，长度限制256字符
     */
    @ApiModelProperty("额外单位信息")
    @JSONField(name = "extra_data")
    @Excel(name = "额外单位信息，自定义信息，长度限制256字符")
    private String extraData;

    /**
     * 成立时间，格式 2017-01-01 00:00:00
     */
    @ApiModelProperty("成立时间")
    @JSONField(name = "established_time")
    @Excel(name = "成立时间，格式 2017-01-01 00:00:00")
    private String establishedTime;

    /**
     * 单位传真
     */
    @ApiModelProperty("单位传真")
    @JSONField(name = "unit_fix")
    @Excel(name = "单位传真")
    private String unitFix;

    /**
     * 邮政编码
     */
    @ApiModelProperty("邮政编码")
    @JSONField(name = " postcode")
    @Excel(name = "邮政编码")
    private String postcode;

    /**
     * 消防机构责任干部
     */
    @ApiModelProperty("消防机构责任干部")
    @JSONField(name = "fire_responsible_leader")
    @Excel(name = "消防机构责任干部")
    private String fireResponsibleLeader;

    /**
     * 营业时最大人数
     */
    @ApiModelProperty("营业时最大人数")
    @JSONField(name = "max_business_mans")
    @Excel(name = "营业时最大人数")
    private Long maxBusinessMans;

    /**
     * 单位消控室视频url（RTMP协议，H.264编码）
     */
    @ApiModelProperty("单位消控室视频url")
    @JSONField(name = "control_center_video_url")
    @Excel(name = "单位消控室视频url", readConverterExp = "R=TMP协议，H.264编码")
    private String controlCenterVideoUrl;

    /**
     * 上级单位名称
     */
    @ApiModelProperty("上级单位名称")
    @Excel(name = "上级单位名称")
    private String superiorUnitName;

    /**
     * 推送状态 0-未推送 1-推送失败 2-推送成功
     */
    @ApiModelProperty("推送状态 0-未推送 1-推送失败 2-推送成功")
    @Excel(name = "推送状态 0-未推送 1-推送失败 2-推送成功")
    private String pushStatus;

    /**
     * 创建用户ID
     */
    @ApiModelProperty("创建用户ID")
    @Excel(name = "创建用户ID")
    private Long createUserId;

    /**
     * 单位ID集合
     */
    @ApiModelProperty("单位ID集合")
    @TableField(exist = false)
    private List<String> unitIds;

    /**
     * 删除标识
     */
    private String delFlag;

    /**
     * 设备信息
     */
    @ApiModelProperty("设备信息")
    @TableField(exist = false)
    private List<TDevice> deviceList;
}
